package com.zxc.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zxc.dao.CnRegionInfoMapper;
import com.zxc.entity.CnRegionInfo;
import com.zxc.service.CstRegionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;


@Service
public class CstRegionServiceImpl extends ServiceImpl<CnRegionInfoMapper, CnRegionInfo> implements CstRegionService {

    @Autowired
    private CnRegionInfoMapper cnRegionInfoMapper;

   /* @Autowired
    private RedisClientSingle redisClientSingle;

    public List<CnRegionInfo> selectAll() {
        //判断集群中是否有数据
        String json = redisClientSingle.hget("crm","1");
        if (StringUtils.isEmpty(json)){
            //说明集群没有缓存,多个线程准备同时访问数据库
            synchronized (this){
                if (StringUtils.isEmpty(json)){
                    System.out.println("数据库无缓存");
                    //说明此时数据库的确为空
                    List<CnRegionInfo> cnRegionInfoList = cnRegionInfoMapper.selectList(new QueryWrapper<>());
                    for (CnRegionInfo cnRegionInfo : cnRegionInfoList){
                        json = JsonUtils.objectToJson(cnRegionInfo);
                        //把转换好的json存入redis
                        redisClientSingle.hset("crm",String.valueOf(cnRegionInfo.getCriId()),json);
                    }

                    return cnRegionInfoList;

                }else {
                    System.out.println("数据库有缓存");
                    //缓存中存在redis
                    List<CnRegionInfo> cnRegionInfos = new ArrayList<>();
                    //返回所有key为crm的hash
                    Set<String> keys = redisClientSingle.hkeys("crm");
                    for (String string : keys){
                        CnRegionInfo cnRegionInfo = new CnRegionInfo();
                        json = redisClientSingle.hget("crm",string);
                        cnRegionInfo = JsonUtils.jsonToPojo(json,CnRegionInfo.class);
                        cnRegionInfos.add(cnRegionInfo);
                    }
                    return cnRegionInfos;
                }
            }

        }else {
            System.out.println("数据库有缓存");
            //缓存中存在redis
            List<CnRegionInfo> cnRegionInfos = new ArrayList<>();
            //返回所有key为crm的hash
            Set<String> keys = redisClientSingle.hkeys("crm");
            for (String string : keys){
                CnRegionInfo cnRegionInfo = new CnRegionInfo();
                json = redisClientSingle.hget("crm",string);
                cnRegionInfo = JsonUtils.jsonToPojo(json,CnRegionInfo.class);
                cnRegionInfos.add(cnRegionInfo);
            }
            return cnRegionInfos;
        }
    }
*/
    @Override
    public List<CnRegionInfo> selectAll(Integer pageNo,Integer pageSize) {
        List<CnRegionInfo> cnRegionInfoList = cnRegionInfoMapper.selectAllPage(pageNo,pageSize);
        return cnRegionInfoList;
    }

    @Override
    @Transactional
    public int deleteByCriCode(List<String> deleteRegion) {
        int result = cnRegionInfoMapper.deleteByCriCode(deleteRegion);
        return result;
    }

    @Override
    public int selectCount() {
        int count = cnRegionInfoMapper.selectCount(new QueryWrapper<>());
        return count;
    }

    @Override
    @Transactional
    public int saveCnRegionInfo(CnRegionInfo cnRegionInfo) {
        int result = cnRegionInfoMapper.insert(cnRegionInfo);
        return result;
    }

    @Override
    public List<CnRegionInfo> getCnRegionInfoByCriShortName(String searchName) {
        List<CnRegionInfo> cnRegionInfoList= cnRegionInfoMapper.selectCnRegionInfoByCriShortName(searchName);
        return cnRegionInfoList;
    }
}
